/*3：重写之前公司的案例
 公司有公司名称，注册地址，电话，经营范围等属性，
 公司有很多员工（暂用数组表示），员工有姓名，年龄，性别，职务，薪水等属性，
 公司有招聘员工，有输出员工信息，以及辞退员工，和统计公司人数的方法
用oo的思想模拟，相关类用构造方法初始化。


4:在上一题的基础上,实现查找薪水最高的员工的方法,方法声明如下:
   public Emp findTopSalary()*/
package Work0511;

public class Company {
	private String name;
	private String address;
	private long phone;
	private String scope;
	private int peopleNum;
	CompanyStaff[] a = new CompanyStaff[30];

	public Company(String name, String address, long phone, String scope) {
		this.name = name;
		this.address = address;
		this.phone = phone;
		this.scope = scope;
	}

	public String getName() {
		return name;
	}

	public String getAddress() {
		return address;
	}

	public long getPhone() {
		return phone;
	}

	public String getScope() {
		return scope;
	}

	public int getPeopleNum() {
		return peopleNum;
	}

	/**
	 * 招聘员工
	 * 
	 * @param name
	 * @param age
	 * @param sex
	 * @param duty
	 * @param salary
	 * @return
	 */
	public boolean addStaff(String name, int age, String sex, String duty, double salary) {
		if (!cheakStaff(name)) {
			for (int b = 0; b < a.length; b++) {
				if (a[b] == null) {
					a[b] = new CompanyStaff(name, age, sex, duty, salary);
					return true;
				}
			}
		}
		return false;
	}

	/**
	 * 检测是否重复招聘
	 * 
	 * @param name
	 * @return
	 */
	public boolean cheakStaff(String name) {
		for (int c = 0; c < a.length; c++) {
			if (a[c] != null) {
				if (a[c].getName().equals(name)) {
					return true;
				}
			}
		}
		return false;
	}

	/**
	 * 展示员工
	 */
	public void showStaff() {
		System.out.println("姓名\t年龄\t性别\t职务\t薪水");
		for (int d = 0; d < a.length; d++) {
			if (a[d] != null) {
				a[d].show();
			}
		}
	}

	/**
	 * 辞退员工
	 * 
	 * @param oldName
	 * @return
	 */
	public boolean rufuseStaff(String oldName) {
		for (int e = 0; e < a.length; e++) {
			if (a[e] != null && a[e].getName().equals(oldName)) {
				a[e] = null;
				for (int f = e; f < a.length - 1; f++) {
					a[f] = a[f + 1];
					if (f + 2 == a.length) {
						a[a.length - 1] = null;
						return true;
					}
				}
			}
		}
		return false;
	}

	/**
	 * 输出公司人数
	 */
	public void statisticsStaff() {
		int num = 0;
		for (int d = 0; d < a.length; d++) {
			if (a[d] != null) {
				num++;
			}
		}
		peopleNum = num;
		System.out.println("总人数为" + getPeopleNum());
	}

	/**
	 * 寻找工资最高的
	 * 
	 * @return
	 */
	public String findTopSalary() {
		double max = a[0].getSalary();
		int w;
		for (w = 0; w < a.length; w++) {
			if (a[w] != null) {
				if (max < a[w].getSalary()) {
					max = a[w].getSalary();
				}
			}
		}
		return "工资最高的人是" + a[w].getName();

	}

	/**
	 * 输出公司信息
	 */
	public void show() {
		System.out
				.println("欢迎来到" + getName() + "本公司地址和电话分别为" + getAddress() + "、" + getPhone() + ",经营项目有" + getScope());
	}

}
